# 兼容 pythone2,3
from __future__ import print_function

# 导入相关python库
import numpy as np
import pandas as pd
# 选择基于梯度下降的线性回归模型
from sklearn.linear_model import LinearRegression
# 特征缩放
from sklearn.preprocessing import MinMaxScaler
# 使用matplotlib库画图
import matplotlib.pyplot as plot

def predict_y():
    #设定随机数种子
    np.random.seed(36)
    #读取数据
    x_train = pd.read_excel('x_train.xls', usecols=[0,1]) # 豆温+时间训练集
    target=pd.read_excel('x_train.xls', usecols=[2])  #火力值训练集
    x_test=pd.read_excel('x_test.xls', usecols=[0,1])         #测试数据

    #数据预处理
    x_train.info()
    minmax_scaler=MinMaxScaler()
    minmax_scaler.fit(x_train)   #进行内部拟合，内部参数会发生变化
    scaler_x_train=minmax_scaler.transform(x_train)
    scaler_x_train=pd.DataFrame(scaler_x_train,columns=x_train.columns)

    LR_reg=LinearRegression(fit_intercept=True, normalize=False,copy_X=True, n_jobs=3)
    #进行拟合
    LR_reg.fit(scaler_x_train,target)

    mm=MinMaxScaler()
    mm.fit(x_test)
    scaler_test=mm.transform(x_test)
    scaler_test=pd.DataFrame(scaler_test,columns=x_test.columns)
    #进行预测
    result = LR_reg.predict(scaler_test)
    result_temp= []
    for item in result[:,0]:
        result_temp.append(int(item))
    print(result_temp)
    df_result = pd.DataFrame(result_temp)
    df_result.to_excel("result.xls") #存储结果

    # 进行绘图
    plot.figure(figsize=(10,7))       #画布大小
    plot.xlabel("Time/S")
    x=pd.read_excel('x_test.xls', usecols=[0])    #时间
    y_douwen = pd.read_excel('x_test.xls', usecols=[1])  #豆温

    plot.plot(x,y_douwen,label='douwen')      #豆温
    plot.plot(x,result_temp,label='preds')        #预测取值
    plot.legend(loc='upper right')  #线条显示位置
    plot.show()
    return result_temp

predict_y()
